package juego;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Energia implements Persistible{
	
	//atributos de instancia
	private int resistencia;
	private int resistenciaMaxima;

	
	//metodos
	
	//constructor. recibe un entero
	public Energia(int n) {
		this.resistencia = n;
		this.resistenciaMaxima = n;
	};


	public int verEnergia() {
		return this.resistencia;
	};
	
	//recibe un entero que lo resta a resistencia
	public void reducirEnergia(int danio) {
		this.resistencia = this.resistencia - danio;
	};
	
	//reduce la resistencia a la mitad.
	//si la resistencia era impar redondea para arriba
	public void reducirMitad() {
		boolean esImpar = ((this.resistencia % 2) == 1);
		this.resistencia = this.resistencia / 2;
		if (esImpar) {
			this.resistencia++;
		}
	};
	
	public boolean quedaEnergia(){
		return (this.resistencia > 0);
	};
	
	//recibe un entero que lo suma a la energia. 
	//si resistencia>resitenciaMaxima, resistencia=resistenciaMaxima
	public void incrementarEnergia(int n) {
		this.resistencia += n;
		if (this.resistencia > this.resistenciaMaxima){
			this.resistencia = this.resistenciaMaxima;
		};
		
	};
	
	public Element getElement(Document doc) {
		Element energia = doc.createElement("Energia");

		Integer valorResistenciaMaxima = new Integer(this.resistenciaMaxima);
		Element resistenciaMaxima = doc.createElement("resistenciaMaxima");
		energia.appendChild(resistenciaMaxima);
		resistenciaMaxima.setTextContent(valorResistenciaMaxima.toString());
		
		Integer valorResistencia = new Integer(this.resistencia);
		Element resistencia = doc.createElement("resistencia");
		energia.appendChild(resistencia);
		resistencia.setTextContent(valorResistencia.toString());
		
		return energia;
	}
	
	public static Energia fromElement(Element element) {
		
		int valorResistenciaMaxima = 0;
		int valorResistencia = 0;
		
		NodeList childs = element.getChildNodes();
		for (int i = 0; i < childs.getLength(); i++) {
			Node child = childs.item(i);
			if (child.getNodeName().equals("resistenciaMaxima")) {
				valorResistenciaMaxima = Integer.parseInt(child.getTextContent());
			} else if (child.getNodeName().equals("resistencia")) {
				valorResistencia = Integer.parseInt(child.getTextContent());
			}
		}
		
		Energia energia = new Energia(valorResistenciaMaxima);
		energia.resistencia = valorResistencia;
		return energia;
	}

}
